import { createStore } from 'db://pkg/@gamex/cc-store';
import { IStore } from '../../../extensions/app/assets/base/BaseModel';
// store中只允许在根路径下定义方法，任何变量在外部访问都是readonly
// store类型的引入是借鉴了Web前端框架中全局状态管理的思路，意图是让数据更安全，更可控。同时框架中还提供了数据绑定的扩展包，可以通过pkg的方式安装，实现「数据->视图」的单向绑定。
export default class Home implements IStore<Home> {
    constructor() {
        return createStore(this);
    }

    name = 'home';
    setName(v: string) {
        this.name = v;
    }

    age = 0;
    setAge(v: number) {
        this.age = v;
    }

    map = new Map<string, number>();
    setMap(k: string, v: number) {
        this.map.set(k, v);
    }
    deleteMap(k: string) {
        this.map.delete(k);
    }

    set = new Set<number>();
    addSet(v: number) {
        this.set.add(v);
    }
    deleteSet(v: number) {
        this.set.delete(v);
    }

    array = new Array<number>();
    pushArray(v: number) {
        this.array.push(v);
    }
    popArray() {
        this.array.pop();
    }
}